package com.inforich.projectManage.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.inforich.common.annotation.Excel;
import com.inforich.common.core.domain.BaseParamEntity;
import com.inforich.common.mybatis.Location;
import com.inforich.common.mybatis.LocationHandler;
import java.math.BigDecimal;
import java.util.Date;
import javax.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 项目对象 br_project
 *
 * @author hjm
 * @date 2022-10-22
 */
@Data
@EqualsAndHashCode()
@Accessors(chain = true)
@TableName("br_project")
public class Project extends BaseParamEntity {

  private static final long serialVersionUID = 1L;

  /**
   * 主键
   */
  @TableId(type = IdType.ASSIGN_UUID)
  private String id;

  /**
   * 项目名称
   */
  @Excel(name = "项目名称")
  @TableField("name_")
  private String name;

  /**
   * 项目性质( 公共类别 )
   */
  @Excel(name = "项目类型", dictType = "project_kind_id")
  private Long projectKindId;

  /**
   * 项目地址
   */
  @Excel(name = "项目地址")
  @Size(max = 500)
  private String address;

  /**
   * 建筑面积
   */
  @Excel(name = "建筑面积(m²)")
  private BigDecimal buildingArea;

  /**
   * 项目当前进度
   */
  @Excel(name = "当前进度")
  @TableField("schedule_")
  private String schedule;

  /**
   * 项目负责人
   */
  @Excel(name = "负责人姓名")
  @Size(max = 50)
  private String personInCharge;

  /**
   * 电话
   */
  @Excel(name = "手机号")
  @Size(min = 11, max = 11)
  private String phone;

  /**
   * 建筑物类型->br_building_type.id
   */
  private Long buildingTypeId;
  @TableField(exist = false)
  private String buildingTypeName;

  /**
   * 结构类型
   */
  private Long structureTypeId;

  /**
   * 所属街道
   */
  private String belongToStreet;

  /**
   * 审批状态( 10:待审核;20:完成;30:取消 )
   */
  private Long approvalStatus;

  /**
   * 清运公司->br_transport_company.id
   */
  private String transportCompanyId;
  @TableField(exist = false)
  private String transportCompanyName;

  /**
   * 建设单位
   */
  @Size(max = 255)
  private String buildingDept;

  /**
   * 监理单位
   */
  @Size(max = 255)
  private String supervisorDept;

  /**
   * 开工日期
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  private Date startWorkData;

  /**
   * 竣工日期
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  private Date beCompletedData;

  /**
   * 启用
   */
  private Integer valid;

  /**
   * 分类项目
   */
  private Integer classproject;
  /**
   * 施工单位
   */
  @Size(max = 255)
  private String constructionDept;

  /**
   * 再生资源
   */
  private Integer recycled;

  /**
   * 定位
   */
  @TableField(typeHandler = LocationHandler.class)
  private Location location;

  /**
   * 所属行政区域->br_area.id
   */
  private String areaId;


  /**
   * 状态
   */
  private Integer state;

  /**
   * 资源化申请状态( 10:未申请;20:待审核;30:已通过;40:未通过 )
   */
  private Long resourceState;

  /**
   * 资源化申请审核时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  private Date resourceExamineTime;

  /**
   * 资源化审核说明
   */
  private String resourceExplain;

  /**
   * 资源化申请时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  private Date resourceAppliedTime;

  /**
   * 资源化利用单位
   */
  @Size(max = 255)
  private String resourceUnit;

  /**
   * 资源化利用合同编号
   */
  @Size(max = 255)
  private String resourceContractNo;

  /**
   * 资源化利用方案( 文件 )
   */
  private String resourcePlanFileId;

  /**
   * 资源化利用合同( 文件 )
   */
  private String resourceContractFileId;

  /**
   * 再生产品应用合同( 文件 )
   */
  private String resourceApplyContractFileId;

  /**
   * 创建时间
   */
  @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private Date createdDate;

  /**
   * 修改时间
   */
  private Date modifiedDate;

  /**
   * 项目图片
   */
  private String projectImages;

  @Excel(name = "项目管理员")
  @TableField(exist = false)
  private String projectManageName;
}